{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# _*Pricing Asian Barrier Spreads*_ "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Introduction\n",
    "<br>\n",
    "An Asian barrier spread is a combination of 3 different option types, and as such, combines multiple possible features that the Qiskit Finance option pricing framework supports:\n",
    "\n",
    "- <a href=\"https://www.investopedia.com/terms/a/asianoption.asp\">Asian option</a>: The payoff depends on the average price over the considered time horizon.\n",
    "- <a href=\"https://www.investopedia.com/terms/b/barrieroption.asp\">Barrier Option</a>: The payoff is zero if a certain threshold is exceeded at any time within the considered time horizon.\n",
    "- <a href=\"https://www.investopedia.com/terms/b/bullspread.asp\">(Bull) Spread</a>: The payoff follows a piecewise linear function (depending on the average price) starting at zero, increasing linear, staying constant.\n",
    "\n",
    "Suppose strike prices $K_1 < K_2$ and time periods $t=1,2$, with corresponding spot prices $(S_1, S_2)$ following a given multivariate distribution (e.g. generated by some stochastic process), and a barrier threshold $B>0$.\n",
    "The corresponding payoff function is defined as\n",
    "\n",
    "\n",
    "$$\n",
    "P(S_1, S_2) =\n",
    "\\begin{cases}\n",
    "\\min\\left\\{\\max\\left\\{\\frac{1}{2}(S_1 + S_2) - K_1, 0\\right\\}, K_2 - K_1\\right\\}, & \\text{ if } S_1, S_2 \\leq B \\\\\n",
    "0, & \\text{otherwise.}\n",
    "\\end{cases}\n",
    "$$\n",
    "\n",
    "\n",
    "In the following, a quantum algorithm based on amplitude estimation is used to estimate the expected payoff, i.e., the fair price before discounting, for the option\n",
    "\n",
    "\n",
    "$$\\mathbb{E}\\left[ P(S_1, S_2) \\right].$$\n",
    "\n",
    "\n",
    "The approximation of the objective function and a general introduction to option pricing and risk analysis on quantum computers are given in the following papers:\n",
    "\n",
    "- <a href=\"https://arxiv.org/abs/1806.06893\">Quantum Risk Analysis. Woerner, Egger. 2018.</a>\n",
    "- <a href=\"https://arxiv.org/abs/1905.02666\">Option Pricing using Quantum Computers. Stamatopoulos et al. 2019.</a>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "from mpl_toolkits.mplot3d import Axes3D\n",
    "from scipy.interpolate import griddata\n",
    "%matplotlib inline\n",
    "import numpy as np\n",
    "\n",
    "from qiskit import QuantumRegister, QuantumCircuit, Aer, execute, AncillaRegister, transpile\n",
    "from qiskit.circuit.library import IntegerComparator, WeightedAdder, LogNormalDistribution, LinearAmplitudeFunction\n",
    "from qiskit.aqua.algorithms import IterativeAmplitudeEstimation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Uncertainty Model\n",
    "\n",
    "We construct a circuit factory to load a multivariate log-normal random distribution into a quantum state on $n$ qubits.\n",
    "For every dimension $j = 1,\\ldots,d$, the distribution is truncated to a given interval $[\\text{low}_j, \\text{high}_j]$ and discretized using $2^{n_j}$ grid points, where $n_j$ denotes the number of qubits used to represent dimension $j$, i.e., $n_1+\\ldots+n_d = n$.\n",
    "The unitary operator corresponding to the circuit factory implements the following: \n",
    "\n",
    "$$\\big|0\\rangle_{n} \\mapsto \\big|\\psi\\rangle_{n} = \\sum_{i_1,\\ldots,i_d} \\sqrt{p_{i_1\\ldots i_d}}\\big|i_1\\rangle_{n_1}\\ldots\\big|i_d\\rangle_{n_d},$$\n",
    "\n",
    "where $p_{i_1\\ldots i_d}$ denote the probabilities corresponding to the truncated and discretized distribution and where $i_j$ is mapped to the right interval using the affine map:\n",
    "\n",
    "$$ \\{0, \\ldots, 2^{n_j}-1\\} \\ni i_j \\mapsto \\frac{\\text{high}_j - \\text{low}_j}{2^{n_j} - 1} * i_j + \\text{low}_j \\in [\\text{low}_j, \\text{high}_j].$$\n",
    "\n",
    "For simplicity, we assume both stock prices are independent and identically distributed.\n",
    "This assumption just simplifies the parametrization below and can be easily relaxed to more complex and also correlated multivariate distributions.\n",
    "The only important assumption for the current implementation is that the discretization grid of the different dimensions has the same step size."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# number of qubits per dimension to represent the uncertainty \n",
    "num_uncertainty_qubits = 2\n",
    "\n",
    "# parameters for considered random distribution\n",
    "S = 2.0 # initial spot price\n",
    "vol = 0.4 # volatility of 40%\n",
    "r = 0.05 # annual interest rate of 4%\n",
    "T = 40 / 365 # 40 days to maturity\n",
    "\n",
    "# resulting parameters for log-normal distribution\n",
    "mu = ((r - 0.5 * vol**2) * T + np.log(S))\n",
    "sigma = vol * np.sqrt(T)\n",
    "mean = np.exp(mu + sigma**2/2)\n",
    "variance = (np.exp(sigma**2) - 1) * np.exp(2*mu + sigma**2)\n",
    "stddev = np.sqrt(variance)\n",
    "\n",
    "# lowest and highest value considered for the spot price; in between, an equidistant discretization is considered.\n",
    "low  = np.maximum(0, mean - 3*stddev)\n",
    "high = mean + 3*stddev\n",
    "\n",
    "# map to higher dimensional distribution\n",
    "# for simplicity assuming dimensions are independent and identically distributed)\n",
    "dimension = 2\n",
    "num_qubits=[num_uncertainty_qubits]*dimension\n",
    "low=low*np.ones(dimension)\n",
    "high=high*np.ones(dimension)\n",
    "mu=mu*np.ones(dimension)\n",
    "cov=sigma**2*np.eye(dimension)\n",
    "\n",
    "# construct circuit factory\n",
    "u = LogNormalDistribution(num_qubits=num_qubits, mu=mu, sigma=cov, bounds=(list(zip(low, high))))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot PDF of uncertainty model\n",
    "x = [ v[0] for v in u.values ]\n",
    "y = [ v[1] for v in u.values ]\n",
    "z = u.probabilities\n",
    "#z = map(float, z)\n",
    "#z = list(map(float, z))\n",
    "resolution = np.array([2**n for n in num_qubits])*1j\n",
    "grid_x, grid_y = np.mgrid[min(x):max(x):resolution[0], min(y):max(y):resolution[1]]\n",
    "grid_z = griddata((x, y), z, (grid_x, grid_y))\n",
    "fig = plt.figure(figsize=(10, 8))\n",
    "ax = fig.gca(projection='3d')\n",
    "ax.plot_surface(grid_x, grid_y, grid_z, cmap=plt.cm.Spectral)\n",
    "ax.set_xlabel('Spot Price $S_1$ (\\$)', size=15)\n",
    "ax.set_ylabel('Spot Price $S_2$ (\\$)', size=15)\n",
    "ax.set_zlabel('Probability (\\%)', size=15)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Payoff Function\n",
    "\n",
    "For simplicity, we consider the sum of the spot prices instead of their average.\n",
    "The result can be transformed to the average by just dividing it by 2.\n",
    "\n",
    "The payoff function equals zero as long as the sum of the spot prices $(S_1 + S_2)$ is less than the strike price $K_1$ and then increases linearly until the sum of the spot prices reaches $K_2$.\n",
    "Then payoff stays constant to $K_2 - K_1$ unless any of the two spot prices exceeds the barrier threshold $B$, then the payoff goes immediately down to zero.\n",
    "The implementation first uses a weighted sum operator to compute the sum of the spot prices into an ancilla register, and then uses a comparator, that flips an ancilla qubit from $\\big|0\\rangle$ to $\\big|1\\rangle$ if $(S_1 + S_2) \\geq K_1$ and another comparator/ancilla to capture the case that $(S_1 + S_2) \\geq K_2$.\n",
    "These ancillas are used to control the linear part of the payoff function.\n",
    "\n",
    "In addition, we add another ancilla variable for each time step and use additional comparators to check whether $S_1$, respectively $S_2$, exceed the barrier threshold $B$. The payoff function is only applied if $S_1, S_2 \\leq B$.\n",
    "\n",
    "The linear part itself is approximated as follows.\n",
    "We exploit the fact that $\\sin^2(y + \\pi/4) \\approx y + 1/2$ for small $|y|$.\n",
    "Thus, for a given approximation scaling factor $c_\\text{approx} \\in [0, 1]$ and $x \\in [0, 1]$ we consider\n",
    "\n",
    "$$ \\sin^2( \\pi/2 * c_\\text{approx} * ( x - 1/2 ) + \\pi/4) \\approx \\pi/2 * c_\\text{approx} * ( x - 1/2 ) + 1/2 $$ for small $c_\\text{approx}$.\n",
    "\n",
    "We can easily construct an operator that acts as \n",
    "\n",
    "$$\\big|x\\rangle \\big|0\\rangle \\mapsto \\big|x\\rangle \\left( \\cos(a*x+b) \\big|0\\rangle + \\sin(a*x+b) \\big|1\\rangle \\right),$$\n",
    "\n",
    "using controlled Y-rotations.\n",
    "\n",
    "Eventually, we are interested in the probability of measuring $\\big|1\\rangle$ in the last qubit, which corresponds to\n",
    "$\\sin^2(a*x+b)$.\n",
    "Together with the approximation above, this allows to approximate the values of interest.\n",
    "The smaller we choose $c_\\text{approx}$, the better the approximation.\n",
    "However, since we are then estimating a property scaled by $c_\\text{approx}$, the number of evaluation qubits $m$ needs to be adjusted accordingly.\n",
    "\n",
    "For more details on the approximation, we refer to:\n",
    "<a href=\"https://arxiv.org/abs/1806.06893\">Quantum Risk Analysis. Woerner, Egger. 2018.</a>\n",
    "\n",
    "Since the weighted sum operator (in its current implementation) can only sum up integers, we need to map from the original ranges to the representable range to estimate the result, and reverse this mapping before interpreting the result. The mapping essentially corresponds to the affine mapping described in the context of the uncertainty model above."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# determine number of qubits required to represent total loss\n",
    "weights = []\n",
    "for n in num_qubits:\n",
    "    for i in range(n):\n",
    "        weights += [2**i]\n",
    "\n",
    "# create aggregation circuit\n",
    "agg = WeightedAdder(sum(num_qubits), weights)\n",
    "n_s = agg.num_sum_qubits\n",
    "n_aux = agg.num_qubits - n_s - agg.num_state_qubits  # number of additional qubits"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# set the strike price (should be within the low and the high value of the uncertainty)\n",
    "strike_price_1 = 3\n",
    "strike_price_2 = 4\n",
    "\n",
    "# set the barrier threshold\n",
    "barrier = 2.5\n",
    "\n",
    "# map strike prices and barrier threshold from [low, high] to {0, ..., 2^n-1}\n",
    "max_value = 2**n_s - 1\n",
    "low_ = low[0]\n",
    "high_ = high[0]\n",
    "\n",
    "mapped_strike_price_1 = (strike_price_1 - dimension*low_) / (high_ - low_) * (2**num_uncertainty_qubits - 1)\n",
    "mapped_strike_price_2 = (strike_price_2 - dimension*low_) / (high_ - low_) * (2**num_uncertainty_qubits - 1)\n",
    "mapped_barrier = (barrier - low) / (high - low) * (2**num_uncertainty_qubits - 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# condition and condition result\n",
    "conditions = []\n",
    "barrier_thresholds = [2]*dimension\n",
    "n_aux_conditions = 0\n",
    "for i in range(dimension):\n",
    "    # target dimension of random distribution and corresponding condition (which is required to be True)\n",
    "    comparator = IntegerComparator(num_qubits[i], mapped_barrier[i] + 1, geq=False)\n",
    "    n_aux_conditions = max(n_aux_conditions, comparator.num_ancillas)\n",
    "    conditions += [comparator]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# set the approximation scaling for the payoff function\n",
    "c_approx = 0.25\n",
    "\n",
    "# setup piecewise linear objective fcuntion\n",
    "breakpoints = [0, mapped_strike_price_1, mapped_strike_price_2]\n",
    "slopes = [0, 1, 0]\n",
    "offsets = [0, 0, mapped_strike_price_2 - mapped_strike_price_1]\n",
    "f_min = 0\n",
    "f_max = mapped_strike_price_2 - mapped_strike_price_1\n",
    "objective = LinearAmplitudeFunction(\n",
    "    n_s,\n",
    "    slopes,\n",
    "    offsets,\n",
    "    domain=(0, max_value),\n",
    "    image=(f_min, f_max),\n",
    "    rescaling_factor=c_approx,\n",
    "    breakpoints=breakpoints\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              ┌───────┐┌──────┐             ┌───────────┐      ┌──────────────┐»\n",
      "     state_0: ┤0      ├┤0     ├─────────────┤1          ├──────┤1             ├»\n",
      "              │       ││      │             │           │      │              │»\n",
      "     state_1: ┤1      ├┤1     ├─────────────┤2          ├──────┤2             ├»\n",
      "              │  P(X) ││      │┌──────┐     │           │      │              │»\n",
      "     state_2: ┤2      ├┤      ├┤0     ├─────┤3          ├──────┤3             ├»\n",
      "              │       ││      ││      │     │           │      │              │»\n",
      "     state_3: ┤3      ├┤      ├┤1     ├─────┤4          ├──────┤4             ├»\n",
      "              └───────┘│      ││      │     │           │┌────┐│              │»\n",
      "       obj_0: ─────────┤      ├┤      ├─────┤           ├┤3   ├┤              ├»\n",
      "                       │      ││      │     │           ││    ││              │»\n",
      "conditions_0: ─────────┤2     ├┤      ├──■──┤           ├┤    ├┤              ├»\n",
      "                       │  cmp ││      │  │  │           ││    ││              │»\n",
      "conditions_1: ─────────┤      ├┤2     ├──■──┤           ├┤    ├┤              ├»\n",
      "                       │      ││  cmp │┌─┴─┐│   c_adder ││    ││   c_adder_dg │»\n",
      "conditions_2: ─────────┤      ├┤      ├┤ X ├┤0          ├┤    ├┤0             ├»\n",
      "                       │      ││      │└───┘│           ││    ││              │»\n",
      "       sum_0: ─────────┤      ├┤      ├─────┤5          ├┤0   ├┤5             ├»\n",
      "                       │      ││      │     │           ││    ││              │»\n",
      "       sum_1: ─────────┤      ├┤      ├─────┤6          ├┤1 F ├┤6             ├»\n",
      "                       │      ││      │     │           ││    ││              │»\n",
      "       sum_2: ─────────┤      ├┤      ├─────┤7          ├┤2   ├┤7             ├»\n",
      "                       │      ││      │     │           ││    ││              │»\n",
      "      work_0: ─────────┤3     ├┤3     ├─────┤8          ├┤4   ├┤8             ├»\n",
      "                       └──────┘└──────┘     │           ││    ││              │»\n",
      "      work_1: ──────────────────────────────┤9          ├┤5   ├┤9             ├»\n",
      "                                            │           ││    ││              │»\n",
      "      work_2: ──────────────────────────────┤10         ├┤6   ├┤10            ├»\n",
      "                                            └───────────┘│    │└──────────────┘»\n",
      "      work_3: ───────────────────────────────────────────┤7   ├────────────────»\n",
      "                                                         └────┘                »\n",
      "«                              ┌─────────┐\n",
      "«     state_0: ────────────────┤0        ├\n",
      "«                              │         │\n",
      "«     state_1: ────────────────┤1        ├\n",
      "«                   ┌─────────┐│         │\n",
      "«     state_2: ─────┤0        ├┤         ├\n",
      "«                   │         ││         │\n",
      "«     state_3: ─────┤1        ├┤         ├\n",
      "«                   │         ││         │\n",
      "«       obj_0: ─────┤         ├┤         ├\n",
      "«                   │         ││         │\n",
      "«conditions_0: ──■──┤         ├┤2        ├\n",
      "«                │  │         ││  cmp_dg │\n",
      "«conditions_1: ──■──┤2        ├┤         ├\n",
      "«              ┌─┴─┐│  cmp_dg ││         │\n",
      "«conditions_2: ┤ X ├┤         ├┤         ├\n",
      "«              └───┘│         ││         │\n",
      "«       sum_0: ─────┤         ├┤         ├\n",
      "«                   │         ││         │\n",
      "«       sum_1: ─────┤         ├┤         ├\n",
      "«                   │         ││         │\n",
      "«       sum_2: ─────┤         ├┤         ├\n",
      "«                   │         ││         │\n",
      "«      work_0: ─────┤3        ├┤3        ├\n",
      "«                   └─────────┘└─────────┘\n",
      "«      work_1: ───────────────────────────\n",
      "«                                         \n",
      "«      work_2: ───────────────────────────\n",
      "«                                         \n",
      "«      work_3: ───────────────────────────\n",
      "«                                         \n",
      "objective qubit index 4\n"
     ]
    }
   ],
   "source": [
    "# define overall multivariate problem\n",
    "qr_state = QuantumRegister(u.num_qubits, 'state')  # to load the probability distribution\n",
    "qr_obj = QuantumRegister(1, 'obj')  # to encode the function values\n",
    "ar_sum = AncillaRegister(n_s, 'sum')  # number of qubits used to encode the sum\n",
    "ar_cond = AncillaRegister(len(conditions) + 1, 'conditions')\n",
    "ar = AncillaRegister(max(n_aux, n_aux_conditions, objective.num_ancillas), 'work')  # additional qubits\n",
    "\n",
    "objective_index = u.num_qubits\n",
    "\n",
    "# define the circuit\n",
    "asian_barrier_spread = QuantumCircuit(qr_state, qr_obj, ar_cond, ar_sum, ar)\n",
    "\n",
    "# load the probability distribution\n",
    "asian_barrier_spread.append(u, qr_state) \n",
    "\n",
    "# apply the conditions\n",
    "for i, cond in enumerate(conditions):\n",
    "    state_qubits = qr_state[(num_uncertainty_qubits * i):(num_uncertainty_qubits * (i + 1))]\n",
    "    asian_barrier_spread.append(cond, state_qubits + [ar_cond[i]] + ar[:cond.num_ancillas])\n",
    "    \n",
    "# aggregate the conditions on a single qubit\n",
    "asian_barrier_spread.mcx(ar_cond[:-1], ar_cond[-1])\n",
    "    \n",
    "# apply the aggregation function controlled on the condition\n",
    "asian_barrier_spread.append(agg.control(), [ar_cond[-1]] + qr_state[:] + ar_sum[:] + ar[:n_aux])\n",
    "\n",
    "# apply the payoff function\n",
    "asian_barrier_spread.append(objective, ar_sum[:] + qr_obj[:] + ar[:objective.num_ancillas])\n",
    "\n",
    "# uncompute the aggregation\n",
    "asian_barrier_spread.append(agg.inverse().control(), [ar_cond[-1]] + qr_state[:] + ar_sum[:] + ar[:n_aux])\n",
    "\n",
    "# uncompute the conditions\n",
    "asian_barrier_spread.mcx(ar_cond[:-1], ar_cond[-1])\n",
    "\n",
    "for j, cond in enumerate(reversed(conditions)):\n",
    "    i = len(conditions) - j - 1\n",
    "    state_qubits = qr_state[(num_uncertainty_qubits * i):(num_uncertainty_qubits * (i + 1))]\n",
    "    asian_barrier_spread.append(cond.inverse(), state_qubits + [ar_cond[i]] + ar[:cond.num_ancillas])\n",
    "\n",
    "print(asian_barrier_spread.draw())\n",
    "print('objective qubit index', objective_index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot exact payoff function\n",
    "plt.figure(figsize=(7,5))\n",
    "x = np.linspace(sum(low), sum(high))\n",
    "y = (x <= 5)*np.minimum(np.maximum(0, x - strike_price_1), strike_price_2 - strike_price_1)\n",
    "plt.plot(x, y, 'r-')\n",
    "plt.grid()\n",
    "plt.title('Payoff Function (for $S_1 = S_2$)', size=15)\n",
    "plt.xlabel('Sum of Spot Prices ($S_1 + S_2)$', size=15)\n",
    "plt.ylabel('Payoff', size=15)\n",
    "plt.xticks(size=15, rotation=90)\n",
    "plt.yticks(size=15)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "tags": [
     "nbsphinx-thumbnail"
    ]
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot contour of payoff function with respect to both time steps, including barrier\n",
    "plt.figure(figsize=(7,5))\n",
    "z = np.zeros((17, 17))\n",
    "x = np.linspace(low[0], high[0], 17)\n",
    "y = np.linspace(low[1], high[1], 17)\n",
    "for i, x_ in enumerate(x):\n",
    "    for j, y_ in enumerate(y):\n",
    "        z[i, j] = np.minimum(np.maximum(0, x_ + y_ - strike_price_1), strike_price_2 - strike_price_1)\n",
    "        if x_ > barrier or y_ > barrier:\n",
    "            z[i, j] = 0\n",
    "            \n",
    "plt.title('Payoff Function', size=15)\n",
    "plt.contourf(x, y, z)\n",
    "plt.colorbar()\n",
    "plt.xlabel('Spot Price $S_1$', size=15)\n",
    "plt.ylabel('Spot Price $S_2$', size=15)\n",
    "plt.xticks(size=15)\n",
    "plt.yticks(size=15)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "exact expected value:\t0.8023\n"
     ]
    }
   ],
   "source": [
    "# evaluate exact expected value\n",
    "sum_values = np.sum(u.values, axis=1)\n",
    "payoff = np.minimum(np.maximum(sum_values - strike_price_1, 0), strike_price_2 - strike_price_1)\n",
    "leq_barrier = [ np.max(v) <= barrier for v in u.values ]\n",
    "exact_value = np.dot(u.probabilities[leq_barrier], payoff[leq_barrier])\n",
    "print('exact expected value:\\t%.4f' % exact_value)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Evaluate Expected Payoff\n",
    "\n",
    "We first verify the quantum circuit by simulating it and analyzing the resulting probability to measure the $|1\\rangle$ state in the objective qubit."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "state qubits:  5\n",
      "circuit width: 15\n",
      "circuit depth: 8541\n"
     ]
    }
   ],
   "source": [
    "num_state_qubits = asian_barrier_spread.num_qubits - asian_barrier_spread.num_ancillas\n",
    "print('state qubits: ', num_state_qubits)\n",
    "transpiled = transpile(asian_barrier_spread, basis_gates=['u', 'cx'])\n",
    "print('circuit width:', transpiled.width())\n",
    "print('circuit depth:', transpiled.depth())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "job = execute(asian_barrier_spread, backend=Aer.get_backend('statevector_simulator'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Exact Operator Value:  0.6303\n",
      "Mapped Operator value: 0.8319\n",
      "Exact Expected Payoff: 0.8023\n"
     ]
    }
   ],
   "source": [
    "# evaluate resulting statevector\n",
    "value = 0\n",
    "for i, a in enumerate(job.result().get_statevector()):\n",
    "    b = ('{0:0%sb}' % num_state_qubits).format(i)[-num_state_qubits:]\n",
    "    prob = np.abs(a)**2\n",
    "    if prob > 1e-4 and b[0] == '1':\n",
    "        value += prob\n",
    "    # all other states should have zero probability due to ancilla qubits\n",
    "    if i > 2**num_state_qubits:\n",
    "        break\n",
    "\n",
    "# map value to original range\n",
    "mapped_value = objective.post_processing(value) / (2**num_uncertainty_qubits - 1) * (high_ - low_)\n",
    "print('Exact Operator Value:  %.4f' % value)\n",
    "print('Mapped Operator value: %.4f' % mapped_value)\n",
    "print('Exact Expected Payoff: %.4f' % exact_value) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Next we use amplitude estimation to estimate the expected payoff.\n",
    "Note that this can take a while since we are simulating a large number of qubits. The way we designed the operator (asian_barrier_spread) implies that the number of actual state qubits is significantly smaller, thus, helping to reduce the overall simulation time a bit."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "# set target precision and confidence level\n",
    "epsilon = 0.01\n",
    "alpha = 0.05\n",
    "\n",
    "# construct amplitude estimation \n",
    "ae = IterativeAmplitudeEstimation(epsilon=epsilon, alpha=alpha, \n",
    "                                  state_preparation=asian_barrier_spread,\n",
    "                                  objective_qubits=[objective_index],\n",
    "                                  post_processing=objective.post_processing)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "result = ae.run(quantum_instance=Aer.get_backend('qasm_simulator'), shots=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Exact value:    \t0.8023\n",
      "Estimated value:\t0.8299\n",
      "Confidence interval: \t[0.8243, 0.8355]\n"
     ]
    }
   ],
   "source": [
    "conf_int = np.array(result['confidence_interval']) / (2**num_uncertainty_qubits - 1) * (high_ - low_)\n",
    "print('Exact value:    \\t%.4f' % exact_value)\n",
    "print('Estimated value:\\t%.4f' % (result['estimation'] / (2**num_uncertainty_qubits - 1) * (high_ - low_)))\n",
    "print('Confidence interval: \\t[%.4f, %.4f]' % tuple(conf_int))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-08-22T01:55:10.230176Z",
     "start_time": "2019-08-22T01:55:10.222004Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<h3>Version Information</h3><table><tr><th>Qiskit Software</th><th>Version</th></tr><tr><td>Qiskit</td><td>None</td></tr><tr><td>Terra</td><td>0.17.0.dev0+8bac9c1</td></tr><tr><td>Aer</td><td>0.6.1</td></tr><tr><td>Ignis</td><td>0.5.0.dev0+470d8cc</td></tr><tr><td>Aqua</td><td>0.8.0.dev0+ce81016</td></tr><tr><td>IBM Q Provider</td><td>0.8.0</td></tr><tr><th>System information</th></tr><tr><td>Python</td><td>3.7.7 (default, May  6 2020, 04:59:01) \n",
       "[Clang 4.0.1 (tags/RELEASE_401/final)]</td></tr><tr><td>OS</td><td>Darwin</td></tr><tr><td>CPUs</td><td>2</td></tr><tr><td>Memory (Gb)</td><td>16.0</td></tr><tr><td colspan='2'>Fri Oct 16 13:15:57 2020 CEST</td></tr></table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div style='width: 100%; background-color:#d5d9e0;padding-left: 10px; padding-bottom: 10px; padding-right: 10px; padding-top: 5px'><h3>This code is a part of Qiskit</h3><p>&copy; Copyright IBM 2017, 2020.</p><p>This code is licensed under the Apache License, Version 2.0. You may<br>obtain a copy of this license in the LICENSE.txt file in the root directory<br> of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.<p>Any modifications or derivative works of this code must retain this<br>copyright notice, and modified files need to carry a notice indicating<br>that they have been altered from the originals.</p></div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import qiskit.tools.jupyter\n",
    "%qiskit_version_table\n",
    "%qiskit_copyright"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "celltoolbar": "Tags",
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
